package demo4.controller;

import com.tedu.InputUtil;
import demo4.mapper.IUserMapper;
import demo4.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Scanner;

/**
 * Controller 控制器，是MVC中的C(后面学习MVC是会详细介绍)
 * 这个层级的类主要职责:与客户端交互，接收客户端请求，并转交给后面业务层处理，并根据
 * 业务层处理的结果回馈给用户。
 *
 * 为了简化目前的操作，我们在当前案例中让Controller也处理业务的工作(省略业务层)
 */
@Component
public class UserController {
    @Autowired
    private IUserMapper userMapper;//注入业务层对象

    public void start(){
        System.out.println("请选择对应的操作,输入序号");
        System.out.println("1.注册,2.登录,3.修改用户信息,4.用户列表,5.删除用户,6.再说");
        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());
        switch (num){
            case 1:
                regUser();
                break;
            case 2:
                loginUser();
                break;
            case 3:
                updateUser();
                break;
            case 4:
                listUser();
                break;
            case 5:
                deleteByUsername();
                break;
            default:
                System.out.println("其他功能还在完善,目前404");
                break;
        }
    }
    public void regUser(){
        System.out.println("欢迎用户注册");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = scanner.nextLine();
        System.out.println("请输入密码");
        String password = scanner.nextLine();
        System.out.println("请输入昵称");
        String nickname = scanner.nextLine();
        System.out.println("请输入年龄");
         int age =scanner.nextInt();
        //判断是否为重复用户
        if(userMapper.selectByUsername(username)!=null){
            System.out.println("该用户已存在!");
        }else {
            User user = new User(null, username, password, nickname, age);

//          User user = InputUtil.getInputObject(new User());

            int num = userMapper.insert(user);

            System.out.println(num > 0 ? "注册成功" : "注册失败");
        }
    }
    public void loginUser(){
        System.out.println("欢迎用户登录");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = scanner.nextLine();
        System.out.println("请输入密码");
        String password = scanner.nextLine();
        User user = userMapper.selectByUsername(username);//根据用户名查询用户
        if(user==null){//用户不存在
            System.out.println("用户不存在");
        }else if(!user.getPassword().equals(password)){
            System.out.println("密码错误");
        }else {
            System.out.println("登录成功,欢迎"+user.getNickname()+"回来");
        }
    }
    public void updateUser(){
        System.out.println("欢迎用户修改信息");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的用户名");
        String username = scanner.nextLine();
         User user = userMapper.selectByUsername(username);
         if(user==null){
             System.out.println("用户不存在");
         }else {
             System.out.println("请输入新密码");
             String password = scanner.nextLine();

             System.out.println("请输入新昵称");
             String nickname = scanner.nextLine();

             System.out.println("请输入新年龄");
             int age = scanner.nextInt();

             user.setPassword(password);
             user.setNickname(nickname);
             user.setAge(age);
             int num = userMapper.update(user);
             System.out.println(num>0?"修改成功":"修改失败");
         }
    }
    public void listUser(){
        System.out.println("用户列表");
        for (User user : userMapper.selectAll()) {
            System.out.println(user);
        }


    }
    public void deleteByUsername(){
        System.out.println("删除用户");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的用户名");
        String username = scanner.nextLine();
        int num = userMapper.deleteByUsername(username);
        System.out.println(num>0?"删除成功":"删除失败");
    }
}
